<script setup>
	import {
		onMounted,
		onUnmounted
	} from 'vue'

	// 时间差阈值（毫秒）
	const TIME_THRESHOLD = 500

	// 标记键名
	const IS_REFRESHING_KEY = 'isRefreshing'

	// 清除本地缓存的函数
	const clearLocalCache = () => {
		try {
			// 清除本地存储（保留必要数据可选择性删除）
			localStorage.clear()
			// 清除会话存储
			sessionStorage.clear()
			console.log('已清除本地缓存')
		} catch (error) {
			console.error('清除缓存失败:', error)
		}
	}

	// 监听页面卸载事件
	let beforeUnloadTime = 0

	const handleBeforeUnload = (event) => {
		// 记录 beforeunload 触发时间
		beforeUnloadTime = Date.now()

		// 设置刷新标记（仅对刷新有效）
		sessionStorage.setItem(IS_REFRESHING_KEY, 'true')

		// 标准写法（某些浏览器需要返回值才能显示确认对话框）
		event.preventDefault()
		event.returnValue = ''
		return ''
	}

	const handleUnload = () => {
		// 计算事件触发时间差
		const gapTime = Date.now() - beforeUnloadTime

		// 关闭页面的时间差通常小于阈值（刷新的时间差会更长）
		if (gapTime < TIME_THRESHOLD) {
			console.log('检测到页面关闭，清除缓存')
			clearLocalCache()
		} else {
			console.log('检测到页面刷新，不清除缓存')
		}
	}

	// 检查是否为刷新（页面重新加载时执行）
	const checkIsRefreshing = () => {
		const isRefreshing = sessionStorage.getItem(IS_REFRESHING_KEY) === 'true'

		// 重置标记
		sessionStorage.removeItem(IS_REFRESHING_KEY)

		if (isRefreshing) {
			console.log('页面已刷新，不清除缓存')
		} else {
			console.log('首次加载或非刷新操作')
			clearLocalCache()
		}

		return isRefreshing
	}

	onMounted(() => {
		// 检查是否为刷新
		checkIsRefreshing()

		// 注册事件监听
		window.addEventListener('beforeunload', handleBeforeUnload)
		window.addEventListener('unload', handleUnload)
	})

	onUnmounted(() => {
		// 移除事件监听（避免内存泄漏）
		window.removeEventListener('beforeunload', handleBeforeUnload)
		window.removeEventListener('unload', handleUnload)
	})
</script>

<style lang="scss">
	@import "./uni_modules/vk-uview-ui/index.scss";
</style>